package com.huilian.iotbox.data.vo;

import com.huilian.iotbox.data.dto.QueryParam;
import com.huilian.iotbox.data.po.CommodityGroup;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 充电桩费率阶段
 *
 * @author cqw
 */
@Data
public class CommodityVo extends QueryParam implements Serializable {
    private Long id;

    /**
     * 场地Id
     */
    private Integer merchantStoreId;

    /**
     * 用户Id
     */
    private Integer userId;

    /**
     * 商品分组ID
     */
    private Integer commodityGroupId;

    /**
     * 零售价
     */
    private BigDecimal retailPrice;

    /**
     * 纳入售币营业额，0/null：不纳入；1：纳入
     */
    private Boolean includeCoinSalesTurnover;

    /**
     * 严格库存管理，0/null：不开启，可以扣到负数；1：开启，最小到0
     */
    private Boolean strictInventoryManagement;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 充值币
     */
    private Integer rechargeCoin;

    /**
     * 赠送币
     */
    private Integer giveCoin;

    /**
     * 套餐推荐层次  1 是最前
     */
    private Integer sort;

    /**
     * 是否推荐
     */
    private Boolean recommend;

    /**
     * 隐藏，线上购买看到，但纸钞机可以用到
     */
    private Boolean hide;

    /**
     * 默认套餐，1、5、10、20、50、100元套餐。金额不能修改，但币数可以修改
     */
    private Boolean isDefault;

    /**
     * 成本价
     */
    private BigDecimal costPrice;

    /**
     * 开启兑换
     */
    private Boolean openExchange;

    /**
     * 积分兑换价格
     */
    private Integer integralConversionPrice;

    /**
     * 游戏币兑换价格
     */
    private Integer coinConversionPrice;

    /**
     * 彩票兑换价格
     */
    private Integer lotteryConversionPrice;

    /**
     * 开启回收
     */
    private Boolean openRecovery;

    /**
     * 回收价格
     */
    private Integer recoveryPrice;

    /**
     * 规格
     */
    private String spec;

    /**
     * 条形码
     */
    private String barCode;

    /**
     * 删除状态：0、未删除；1、已删除
     */
    private Integer deleteStatus;

    /**
     * 图片
     */
    private String fileName;

    /**
     * 描述
     */
    private String desc;

    /**
     * 上架POS机
     */
    private Boolean posTerminal;

    /**
     * 上架积分商城
     */
    private Boolean integralMallTerminal;

    /**
     * 套餐计量单位，如：次、分钟、圈
     */
    private String measuringUnit;

    private Date createTime;

    private Date updateTime;

    /**
     * 0 下架 1上架
     */
    private Integer status;

    /**
     * 商品分组
     */
    private CommodityGroupVo commodityGroupVo;
    private CommodityGroup commodityGroup;

    /**
     * 场地简称
     */
    private String merchantShortName;

    private String storeName;
    /**
     * 商品列表
     */
    private List<CommodityVo> commodityVoList;

    /**
     * 分组id
     */
    private Integer groupId;
    /**
     * 分组name
     */
    private String groupName;

    /**
     * commodityGroup  分组类型ID，1、游戏币（固定），2、通用，3、套票
     */
    private Integer type;

    /**
     * 上架的门店
     */
    private List<CommodityStoreUpDownVo> commodityStoreUpDownList;

    /**
     * 积分商城开启自动兑换
     */
    private Boolean integralMallSelfService;

    /**
     * 游玩项目
     */
    private List<CommodityProjectRelevanceVo> checkPlayList;

    /**
     * 套票类别
     */
    private Integer ticketPackageType;
    /**
     * 套票名称
     */
    private String ticketPackageTypeName;

    /**
     * 指定到期时间
     */
    private Date specifyDueTime;

    /**
     * 首次使用后开始计算过期天数
     */
    private Boolean resetExpirationDate;

    /**
     * 首次使用后多少天过期
     */
    private Integer numberOfDays;

    /**
     * 限制每天核销次数
     */
    private Boolean quantityWrittenOff;

    /**
     * 每天核销次数
     */
    private Integer everydayQuantityWrittenOff;

    /**
     * 总游玩
     */
    private Integer totalNumberOfPlay;

    private Long commodityStoreUpDownId;

    /**
     * 游玩的项目names
     */
    private String playNames;

    /**
     * 分组类型ID，1、游戏币（固定），2、通用，3、套票
     */
    private Integer goodsType;

    /**
     * 库存
     */
    private Integer stock;
    /**
     * 安全库存
     */
    private Integer safeStock;
    /**
     * 游玩次数
     */
    private Integer numberOfPlay;
    /**
     * 是否为自提
     */
    private Boolean isSelfMention;
    /**
     * 是否为直邮
     */
    private Boolean isDirectMail;

    private Integer num;

    private Integer sale;

    private List<CommoditySupplierVo> commoditySupplierVos = new ArrayList<>();
    private List<CommodityGroupVo> commodityGroupVos = new ArrayList<>();
    private String goodsName;
    private Long commodityId;

    private Integer amount;
    /**
     * 上架用户端
     */
    private Boolean clientTerminal;

    private Integer commoditySupplierId;

    /**
     * 价格, 对应订单表的commodityStoreUpDownIdList
     */
    private BigDecimal price;

    private String typeName;
    private String commodityName;

    private String fullName;
    private Long csId;

    private Long memberStoreBalanceId;
    private Integer freightLane;

    private Integer orderItemShipmentStatus;
    private Integer orderItemShipmentFailureNum;
    private Integer orderItemNum;
    private String unit;

    private Long commodityStockId;

    private Integer commodityStockVersion;

    private Integer purchaseLimit;

    private Integer cprStatus;
    private String endTime;
    /**
     * 限购id
     * */
    private Long cprId;
    private BigDecimal originalPrice;
    private Integer hierarchy;
    private String alias;
    private Integer capacity;
    private Integer displayRackItemId;
    /**
     * 充值余额
     */
    private Integer rechargeBalance;
    /**
     * 赠送余额
     */
    private Integer donateBalance;

    private List<CommodityItemVo> commodityItemVoList;

    private String cname;
    /**
     * 会员售价
     * */
    private BigDecimal retailVIPPrice;

    private String commodityDetailFileName;

    /**
     * 服务套餐
     */
    private List<DeviceServicePackageVo> servicePackageList;
    /**
     * 储值套餐
     */
    private List<CommodityStoreUpDownVo> storedValuePackageList;
    /**
     * 游戏币/弹珠套餐
     */
    private List<CommodityStoreUpDownVo> gameCoinsPackageList;
}
